/**
 * @description 签署位验证模块，实现业务规则校验
 */

/**
 * 校验签署位位置是否超出边界
 * @param {object} position - 签署位位置 { x, y, width, height }
 * @param {object} page - 页面尺寸 { width, height }
 * @returns {boolean} 是否有效
 */
export function isPositionValid(position, page) {
  if (!position || !page) return false;
  const { x, y, width, height } = position;
  const { width: pageWidth, height: pageHeight } = page;

  return x >= 0 && y >= 0 && x + width <= pageWidth && y + height <= pageHeight;
}

/**
 * 校验是否所有必需的签署方都已分配签署位
 * @param {Array} signers - 签署方列表
 * @param {Array} signPositions - 签署位列表
 * @returns {boolean} 是否所有签署方都已分配
 */
export function areAllSignersAssigned(signers, signPositions) {
  if (!signers || !signPositions) return true; // 如果没有签署方，则认为已分配

  const assignedSignerIds = new Set(signPositions.map(p => p.signerId));
  return signers.every(signer => assignedSignerIds.has(signer.id));
}